home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turnbull China Bikeride
/
Turnbull China Bikeride - Disc 2.iso
/
STUTTGART
/
LANG
/
OBERON
/
POTSRC
/
lib
/
mod
/
strings
next >
Wrap
Text File
|
1995-01-22
|
1KB
|
48 lines
MODULE Strings;
PROCEDURE Length*(s: ARRAY OF CHAR): LONGINT;
VAR l: LONGINT;
BEGIN l := 0; WHILE s[l] # 0X DO INC(l) END; RETURN l
END Length;
PROCEDURE Append*(VAR s: ARRAY OF CHAR; tail: ARRAY OF CHAR);
VAR i, j: LONGINT;
BEGIN
i := 0; WHILE s[i] # 0X DO INC(i) END; j := i;
LOOP
s[i] := tail[i - j];
IF s[i] = 0X THEN EXIT END;
INC(i)
END
END Append;
(* we suppose Base to be either extent of 2 or 10 *)
PROCEDURE FromLInt*(li: LONGINT; Base: SHORTINT; VAR s: ARRAY OF CHAR);
VAR i: INTEGER;
PROCEDURE Tail(li: LONGINT);
BEGIN
IF li >= Base THEN Tail(li DIV Base); li := li MOD Base END;
IF li < 10 THEN s[i] := CHR(li + ORD("0"))
ELSE s[i] := CHR(li - 10 + ORD("A"))
END;
INC(i)
END Tail;
BEGIN
i := 0;
IF li < 0 THEN
IF Base = 10 THEN (* only for base ten *)
s[0] := "-"; li := -li; i := 1
ELSE (* two's complement arithmetics (should import SYSTEM) *)
Tail(MAX(LONGINT) DIV (Base DIV 2) + (li + Base) DIV Base);
li := li MOD Base
END
END;
Tail(li);
s[i] := 0X
END FromLInt;
END Strings.